package com.easylinkin.linkappapi.lobar.entity;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;

/**
 * <p>
 * 闸机表
 * </p>
 *
 * @author kanyuanfeng
 * @since 2022-04-13
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("app_gate")
public class Gate extends Model<Gate> {

    private static final long serialVersionUID = 1L;

    /**
     * ID 主键自增
     */
    @TableId
    private String id;

    /**
     * 项目ID(linkapp_tenant)
     */
    @TableField("tenant_id_")
    private String tenantId;

    /**
     * 名称
     */
    @TableField("name_")
    private String name;

    /**
     * 品牌
     */
    @TableField("brand_")
    private String brand;

    /**
     * 序列号
     */
    @TableField("code_")
    private String code;

    /**
     * 位置
     */
    @TableField("position_")
    private String position;

    /**
     * 状态 1在线0离线
     */
    @TableField("status_")
    private Integer status;

    /**
     * 方向 1进门2出门
     */
    @TableField("direction_")
    private Integer direction;

    /**
     * 是否支付健康码测温1支持 0不支持
     */
    @TableField("health_temperature_")
    private Integer healthTemperature;

    /**
     * 设备id
     */
    @TableField("device_id_")
    private String deviceId;

    /**
     * 是否绑定工地卫士 1是0否
     */
    @TableField("blade_guard_bind_status_")
    private Integer bladeGuardBindStatus;

    /**
     * 工地卫士 projectID
     */
    @TableField("blade_guard_project_id_")
    private String bladeGuardProjectId;

    /**
     * 工地卫士 userId
     */
    @TableField("blade_guard_user_id")
    private String bladeGuardUserId;

    /**
     * 闸机 经度
     */
    @TableField("blade_guard_jing_du")
    private String bladeGuardJingDu;

    /**
     * 闸机 维度
     */
    @TableField("blade_guard_wei_du")
    private String bladeGuardWeiDu;

    /**
     * 工地卫士二维码
     */
    @TableField("blade_guard_qrcode")
    private String bladeGuardQRCode;

    /**
     * 工地卫士 项目名称
     */
    @TableField("blade_guard_project_name")
    private String bladeGuardProjectName;

    /**
     * 工地卫士 项目地址
     */
    @TableField("blade_guard_project_address")
    private String bladeGuardProjectAddress;

    /**
     * 创建人id
     */
    @TableField("creator_id_")
    private Long creatorId;

    /**
     * 创建日期
     */
    @TableField("create_time_")
    private Date createTime;

    /**
     * 修改人id
     */
    @TableField("modify_id_")
    private Long modifyId;

    /**
     * 修改时间
     */
    @TableField("modify_time_")
    private Date modifyTime;

    /**
     * 备注
     */
    @TableField("remark_")
    private String remark;

    /**
     * 服务区域：1施工区，2办公区，3生活区
     */
    @TableField(value = "service_area", updateStrategy = FieldStrategy.IGNORED)
    private Integer serviceArea;

    /**
     * 通行管理(多选)：1施工云，2武汉实名制平台'
     */
    @TableField("access_")
    private String access;

    /**
     * 当进入区域：1施工区，2办公区，3生活区,4项目外
     */
    @TableField("in_area_")
    private Integer inArea;

    /**
     * 计入考勤：0-否 1-是
     */
    @TableField("is_record_")
    private Integer isRecord;

    /**
     * id集合
     * @return
     */
    @TableField(exist = false)
    private Set<String> ids;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

    /**
     * 定义一个闸机下发的id前缀
     * @return
     */
    public static String getIdPre(){
        return "ZHA";
    }

    /**
     * 定义一个闸机下发结果存在redis的前缀
     * @return
     */
    public static String getRedisIdPre(){
        return "ZHARed:";
    }

}
